﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using VacationDaysCommons;
using VacationDaysCommons.Faults;

namespace VacationDays
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
    [ServiceContract]
    public interface IVDUserService
    {
        [OperationContract]
        VDEmployee LoginUser(string username, string password);
        [OperationContract]
        void LogoutUserSession(Guid sessionID);

        [OperationContract]
        [FaultContract(typeof(VDUsernameAlreadyExistsFault))]
        [FaultContract(typeof(VDEmailAlreadyExistsFault))]
        [FaultContract(typeof(VDUnknownErrorFault))]
        VDEmployee CreateNewUser(VDEmployee newUser);

        [OperationContract]
        bool UpdateUser(VDEmployee updatedUserInfo);

        [OperationContract]
        List<VDEmployee> GetEmployees(int startIndex, int count);

        [OperationContract]
        List<VDEmployee> GetProjectManagers();

        [OperationContract]
        List<VDEmployee> GetEmployeesByPM(Guid PMId);
        
    }
}
